﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using SistemadeEstágios.Model;
using SistemadeEstágios.Negocio;

namespace SistemadeEstágios
{
    public partial class frmCadResponsavel : Form
    {
        private ResponsaveisNG _respNG;
        private CursosNG _cursoNG;
        private bool isNovo;
        public frmCadResponsavel()
        {
            InitializeComponent();
        }

        private void frmCadResponsavel_Load(object sender, EventArgs e)
        {
            this.Left = 260;
            this.Top = 200;
            _respNG = new ResponsaveisNG();
        }

        private void BtnSair_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void TxtMatricula_Validating(object sender, CancelEventArgs e)
        {
            Responsaveis resp;
            _respNG = new ResponsaveisNG();
            if (!string.IsNullOrEmpty(TxtMatricula.Text))
            {
                resp = _respNG.Buscar(Int32.Parse(TxtMatricula.Text));
                if (resp != null)
                {
                    PreencheCampos(resp);
                    isNovo = false;
                }
                else
                {
                    if (e.Cancel)
                    {
                        LimpaCampos();
                    }
                    isNovo = true;
                }
            }
        }

        private void BtnBscResponsavel_Click(object sender, EventArgs e)
        {
            frmPesquisa frm = new frmPesquisa();
            frm.titulo = "Pesquisa de Responsáveis";
            frm.Tipo = TipoPesquisa.Responsavel;
            frm.ShowDialog();

            if (frm.bRetorno)
            {
                TxtMatricula.Text = frm.iRetorno.ToString();
                TxtMatricula_Validating(TxtMatricula, new CancelEventArgs(false));
            }
        }

        private void BtnBscCurso_Click(object sender, EventArgs e)
        {
            frmPesquisa frm = new frmPesquisa();
            frm.titulo = "Pesquisa de Cursos";
            frm.Tipo = TipoPesquisa.Curso;
            frm.ShowDialog();

            if (frm.bRetorno)
            {
                TxtCurso.Text = frm.iRetorno.ToString();
                TxtCurso_Validating(TxtCurso, new CancelEventArgs(false));                
            }
        }

        private void TxtCurso_Validating(object sender, CancelEventArgs e)
        {
            Cursos obj;
            if (!string.IsNullOrEmpty(TxtCurso.Text))
            {
                _cursoNG = new CursosNG();

                obj = _cursoNG.Buscar(Int32.Parse(TxtCurso.Text));

                if (obj != null)
                {
                    LblMstCurso.Text = obj.Nome;
                }
            }
        }

        private void PreencheCampos(Responsaveis resp)
        {
            TxtMatricula.Text = resp.Codigo.ToString();
            TxtNome.Text = resp.Nome;
            TxtEmail.Text = resp.Email;
            TxtTelefone.Text = resp.Telefone;
            TxtCurso.Text = resp.Curso.Codigo.ToString();

        }

        private void BtnCancelar_Click(object sender, EventArgs e)
        {
            LimpaCampos();
        }

        private void LimpaCampos()
        {
             //_respNG = new ResponsaveisNG();

            foreach (Control ctl in Controls)
            {
                if (ctl.GetType() == typeof(GroupBox))
                {
                    foreach (Control control in ctl.Controls)
                    {
                        if (control.GetType() == typeof(TextBox))
                        {
                            control.Text = string.Empty;
                        }
                    }
                }
            }

            TxtMatricula.Text = _respNG.Ultimo().ToString();
            TxtMatricula_Validating(TxtMatricula, new CancelEventArgs(false));
        }

        private void BtnConfirmar_Click(object sender, EventArgs e)
        {
            if (VerificaCampos())
            {
                Responsaveis resp = new Responsaveis();

                resp.Codigo = Int32.Parse(TxtMatricula.Text);
                resp.Nome = TxtNome.Text.Trim();
                resp.Telefone = TxtTelefone.Text;
                resp.Email = TxtEmail.Text;
                resp.Curso = new Cursos();
                resp.Curso.Codigo = Int32.Parse(TxtCurso.Text);

                    if (_respNG.Inserir(resp, isNovo))
                        LimpaCampos();
            }
        }

        private bool VerificaCampos()
        {
            bool retorno = false;
            if (string.IsNullOrEmpty(TxtNome.Text))
            {
                TxtNome.Focus();
                TxtNome.SelectAll();
                MessageBox.Show("O campo Nome deve ser preenchido. Tente Novamente.");
            }
            else if (string.IsNullOrEmpty(TxtEmail.Text))
            {
                TxtEmail.Focus();
                TxtEmail.SelectAll();
                MessageBox.Show("O campo Email deve ser preenchido. Tente Novamente.");
            }
            else if (string.IsNullOrEmpty(TxtTelefone.Text))
            {
                TxtTelefone.Focus();
                TxtTelefone.SelectAll();
                MessageBox.Show("O campo Telefone deve ser preenchido. Tente Novamente.");
            }
            else
                retorno = true;

            return retorno;
        }

    }
}
